﻿'Imports EVOLTA.Seguridad.Bl.Bc
'Imports EVOLTA.Seguridad.Bl.Be
Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be

Partial Class seguridad_perfilUsuario
    Inherits System.Web.UI.Page

    Private perfiles As List(Of EperfilUsuario) = Nothing

    Dim expression As String = Nothing
    Dim direction As SortDirection = SortDirection.Ascending

#Region "           Formulario                              "
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        btnAgregarPerfilUsuario.Attributes.Add("onclick", "MuestraPanelPerfilUsuario(); return false;")
        btnAgregarOpciones.Attributes.Add("onclick", "MuestraPanelPerfilUsuario(); return false;")

        If Not IsPostBack Then
            cargarPerfiles()
            cargarEstado()
            'cargarOpciones()
        End If
        Dim scriptText As String = ""
        scriptText &= "function mensaje(){"
        scriptText &= "    alert('se graba correctamente.');"
        scriptText &= "}"
        ClientScript.RegisterClientScriptBlock(Me.GetType(), "mensaje()", scriptText, True)
    End Sub
    Private Sub cargarPerfiles()
        perfiles = RperfilUsuario.SeleccionarTodo(Me.Master.descEmpresa, False)
        Session("Modulo") = perfiles
        If Not perfiles Is Nothing Then
            gvwPerfiles.DataSource = perfiles
            gvwPerfiles.DataBind()
        End If
    End Sub
    Private Sub cargarEstado()
        Dim Eestado As New Ecommons
        selEstado.DataSource = Eestado.estado
        selEstado.DataTextField = "descripcion"
        selEstado.DataValueField = "codigo"
        selEstado.DataBind()
    End Sub
    'Private Sub cargarOpciones()
    '    gvwPerfilOpciones.DataSource = Ropciones.SeleccionarTodoXEstado(Me.Master.descEmpresa)
    '    gvwPerfilOpciones.DataBind()
    'End Sub
    Private Sub cargarOpciones2(ByVal pIdPerfil As Int32)
        Dim pPerfilOpciones As List(Of EperfilOpciones) = Nothing
        Dim pPerfilOpcione As New EperfilOpciones _
        With { _
                .idPerfil = pIdPerfil _
             }
        pPerfilOpciones = RperfilOpciones.SeleccionarTodos(Me.Master.descEmpresa, False, pPerfilOpcione)
        If Not pPerfilOpciones Is Nothing Then
            'gvwPerfilOpciones.DataSource = Ropciones.SeleccionarTodoXEstado(Me.Master.descEmpresa)
            gvwPerfilOpciones.DataSource = pPerfilOpciones
            gvwPerfilOpciones.DataBind()
        End If
    End Sub
    Private Sub cargarPerfilOpciones(ByVal pIdPerfil As Int32)
        Dim pPerfilOpciones As List(Of EperfilOpciones) = Nothing
        Dim pPerfilOpcione As New EperfilOpciones _
        With { _
                .idPerfil = pIdPerfil _
             }
        pPerfilOpciones = RperfilOpciones.SeleccionarTodo(Me.Master.descEmpresa, False, pPerfilOpcione)
        If Not pPerfilOpciones Is Nothing Then
            gvwOpciones.DataSource = pPerfilOpciones
            gvwOpciones.DataBind()
            upnUnidades.Update()
        End If
    End Sub
#End Region

#Region "           Perfil                                  "
    Protected Sub lnkBtn_CommandPerfilUsuario(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) _
        Handles lnkBtnCodigo.Command, lnkBtnNombre.Command, lnkBtnEstado.Command
        perfiles = Session("PerfilUsuario")
        Select Case e.CommandName
            Case "idPerfilUsuario"
                Dim List = From d In perfiles _
                           Order By d.idPerfilUsuario _
                           Select d
                gvwPerfiles.DataSource = List
                gvwPerfiles.DataBind()
            Case "descPerfilUsuario" : expression = e.CommandArgument
                Dim List = From d In perfiles _
                           Order By d.descPerfilUsuario _
                           Select d
                gvwPerfiles.DataSource = List
                gvwPerfiles.DataBind()
            Case "descEstado" : expression = e.CommandArgument
                Dim List = From d In perfiles _
                           Order By d.estado _
                           Select d
                gvwPerfiles.DataSource = List
                gvwPerfiles.DataBind()
        End Select
    End Sub
    Protected Sub gvwPerfiles_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) _
    Handles gvwPerfiles.PageIndexChanging

    End Sub
    Protected Sub gvwPerfiles_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _
    Handles gvwPerfiles.RowCommand
        Select Case e.CommandName
            Case "Edit"

            Case "Delete"
                Dim pPerfiles As EperfilUsuario = New EperfilUsuario
                With pPerfiles
                    .idPerfilUsuario = e.CommandArgument
                    .idUsuario = Me.Master.idUsuario
                End With
                RperfilUsuario.Eliminar(Me.Master.descEmpresa, pPerfiles)
                cargarPerfiles()
            Case "Ver"
                cargarPerfilOpciones(CType(e.CommandArgument, Int32))
                cargarOpciones2(CType(e.CommandArgument, Int32))
                hdidPerfil.Value = e.CommandArgument
                upIdPerfil.Update()
        End Select
    End Sub
    Protected Sub gvwPerfiles_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwPerfiles.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gvwPerfiles, "Select$" + e.Row.RowIndex.ToString)
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub gvwPerfiles_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvwPerfiles.RowDeleting

    End Sub
    Protected Sub gvwPerfiles_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvwPerfiles.RowEditing
        Dim id As Int32 = CType(CType(gvwPerfiles.Rows(e.NewEditIndex).FindControl("lnkCodigo"), LinkButton).Text, Int32)
        perfiles = Session("Modulo")
        Dim Lperfiles = From v In perfiles _
                            Where v.idPerfilUsuario = id _
                            Select v
        lblTituloPerfiles.Text = "Modulo [Modificar]"
        lblTituloPerfiles.ToolTip = "Modificar"
        txtIdPerfiles.Text = Lperfiles.ElementAt(0).idPerfilUsuario
        txtNombrePerfil.Value = Lperfiles.ElementAt(0).descPerfilUsuario
        selEstado.Value = Lperfiles.ElementAt(0).estado
        mpDetallePerfilUsuario.Show()
    End Sub
    Protected Sub btnGuardarPerfiles_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardarPerfiles.Click
        If txtNombrePerfil.Value.Trim.Length > 0 Then
            Dim jsMensaje As String = Nothing
            Dim pPerfiles As EperfilUsuario
            If lblTituloPerfiles.ToolTip = "Registrar" Then
                pPerfiles = New EperfilUsuario
                With pPerfiles
                    .descPerfilUsuario = txtNombrePerfil.Value.Trim.ToUpper
                End With
                Dim resultado As Boolean = RperfilUsuario.Añadir(Me.Master.descEmpresa, pPerfiles)
                If resultado Then
                    jsMensaje = "<script>javascript:alert(' Se registro correctamente.');</script>)"
                    Controls.Add(New LiteralControl(jsMensaje))
                    cargarPerfiles()
                Else
                    'txtMensajes.Value = "No se pudo registrar."
                End If
            ElseIf lblTituloPerfiles.ToolTip = "Modificar" Then
                pPerfiles = New EperfilUsuario
                With pPerfiles
                    .idPerfilUsuario = CType(txtIdPerfiles.Text, Int32)
                    .descPerfilUsuario = txtNombrePerfil.Value.Trim.ToUpper
                    .estado = selEstado.Value
                End With
                RperfilUsuario.Editar(Me.Master.descEmpresa, pPerfiles)
                jsMensaje = "<script>javascript:alert(' Se modifico correctamente.');</script>)"
                Controls.Add(New LiteralControl(jsMensaje))
                cargarPerfiles()
            End If
            lblTituloPerfiles.ToolTip = "Registrar"
        End If
    End Sub
    Protected Sub btnCancelarPerfilUsuario_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelarPerfilUsuario.Click
        lblTituloPerfiles.ToolTip = "Registrar"
        mpDetallePerfilUsuario.CancelControlID = "btnCancelarPerfilUsuario"
    End Sub
#End Region

#Region "           Opciones                                "
    Protected Sub btnSeleccionar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSeleccionar.Click
        If Not hdidPerfil.Value.ToString.Equals("0") Then
            Dim chk As CheckBox
            Dim opcion As EperfilOpciones = Nothing
            Dim arr As String() = Nothing
            Dim resultado As Boolean = False
            Dim jsMensaje As String = Nothing

            Dim pPerfilOpcione As New EperfilOpciones _
                With { _
                        .idPerfil = CType(hdidPerfil.Value, Int32) _
                     }
            resultado = RperfilOpciones.EliminarAll(Me.Master.descEmpresa, pPerfilOpcione)
            For Each gvw As GridViewRow In gvwPerfilOpciones.Rows
                chk = CType(gvw.FindControl("chkSeleccionar"), CheckBox)
                If chk.Checked Then
                    Dim dato As String = CType(gvw.Cells(0).FindControl("lnkModulo"), LinkButton).CommandArgument
                    arr = Split(CType(gvw.Cells(0).FindControl("lnkModulo"), LinkButton).CommandArgument, " ")
                    opcion = New EperfilOpciones _
                    With { _
                        .idPerfil = CType(hdidPerfil.Value, Int32), _
                        .idModulo = CType(arr(0).ToString, Int32), _
                        .idSubModulo = CType(arr(1).ToString, Int32), _
                        .idOpcion = CType(arr(2).ToString, Int32), _
                        .seleccionar = 1, _
                        .idUsuario = Me.Master.idUsuario _
                    }
                    resultado = RperfilOpciones.Añadir(Me.Master.descEmpresa, opcion)
                End If
            Next
            If resultado Then
                jsMensaje = "<script>javascript:alert(' Se registro correctamente.');</script>)"
                Controls.Add(New LiteralControl(jsMensaje))
                cargarPerfilOpciones(CType(hdidPerfil.Value, Int32))
            Else
                jsMensaje = "<script>javascript:alert('No se pudo registrar.');</script>)"
                Controls.Add(New LiteralControl(jsMensaje))
            End If
        End If
    End Sub
    Protected Sub gvwOpciones_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvwOpciones.RowCommand
        Select Case e.CommandName
            Case "Edit"

            Case "Delete"
                Dim arr As String() = Split(e.CommandArgument, ",")
                Dim pPerfilOpcione As New EperfilOpciones _
                With { _
                        .idModulo = CType(arr(0), Int32), _
                        .idSubModulo = CType(arr(1), Int32), _
                        .idOpcion = CType(arr(2), Int32), _
                        .idPerfil = CType(arr(3), Int32) _
                     }
                RperfilOpciones.Eliminar(Me.Master.descEmpresa, pPerfilOpcione)
                cargarPerfilOpciones(CType(arr(3), Int32))
        End Select
    End Sub
    Protected Sub gvwOpciones_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvwOpciones.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gvwOpciones, "Select$" + e.Row.RowIndex.ToString)
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub gvwOpciones_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvwOpciones.RowDeleting

    End Sub
#End Region

End Class
